]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
appDisplay: Don't assume this._placeholder always exists
authorAlessandro Bono <alessandro.bono369@gmail.com>
Sun, 15 Jan 2023 15:34:38 +0000 (16:34 +0100)
committerMarge Bot <marge-bot@gnome.org>
Mon, 16 Jan 2023 20:24:26 +0000 (20:24 +0000)
Dropping a icon from the dash to the application grid will set this._placeholder
to null. However the AppIcon is still used to represent the application in the
application grid. If we click on it we emit a pressed event. Stop assuming
that this._placeholder is still valid in the callback, use the icon parameter
instead.

This fixes the following error:
```
Gjs-CRITICAL **: 18:22:39.003: JS ERROR: TypeError: this._placeholder is null
_ensurePlaceholder/<@resource:///org/gnome/shell/ui/appDisplay.js:1477:17
vfunc_button_press_event@resource:///org/gnome/shell/ui/appDisplay.js:3121:27
```

Fixes: 6fc93b78bc54763c0876951f2425fcfd96f61f00
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6317
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2606>

js/ui/appDisplay.js

index 343f6fd815959dfbf395fc2ffd4420ae5767113d..abbadcbed7de6f42258a928eee1e9313159bf285 100644 (file)
@@ -1473,9 +1473,9 @@ class AppDisplay extends BaseAppView {
             global.settings.is_writable('app-picker-layout');
 
         this._placeholder = new AppIcon(app, { isDraggable });
-        this._placeholder.connect('notify::pressed', () => {
-            if (this._placeholder.pressed)
-                this.updateDragFocus(this._placeholder);
+        this._placeholder.connect('notify::pressed', icon => {
+            if (icon.pressed)
+                this.updateDragFocus(icon);
         });
         this._placeholder.scaleAndFade();
         this._redisplay();